package xmlParsers;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class SystemParserBuscador {
	
private static SystemParserBuscador instancia;
	
	private DocumentBuilderFactory factory;
	
	private SystemParserBuscador() {
		this.factory = DocumentBuilderFactory.newInstance();
		factory.setIgnoringElementContentWhitespace(true);
	}

	public static SystemParserBuscador getInstance() {
		if (instancia == null)
			return new SystemParserBuscador();
		return instancia;
	}
	
	
	
	
	
	
	
	
	public List<Float> parseXml(String path,String nombre) throws ParserConfigurationException, SAXException, IOException{
		
		
		float precio=0, cantidad=0,porcentaje=0;

		DocumentBuilder builder = this.factory.newDocumentBuilder();
		File f = new File(path);
		
		if (f != null) {
			

			Document doc = builder.parse(f);
			Element root = doc.getDocumentElement();
			
			
				
				
				
				NodeList children = root.getChildNodes();
				
				for(int i=0;i<children.getLength();i++){
					Node child = children.item(i);
					NodeList hijos = null;
					
					if (child instanceof Element) {
						Element childelement = (Element) child;
					
					if (childelement.getNodeName().trim().equalsIgnoreCase("producto")){
						hijos= childelement.getChildNodes();
						
						if(hijos.item(0).getTextContent().equalsIgnoreCase(nombre))
						for (int j = 0; j < hijos.getLength(); j++){
							
							
							if(hijos.item(j).getNodeName().trim().equalsIgnoreCase("precio")){
								
									precio=Float.parseFloat	(hijos.item(j).getTextContent());
							}
							
							if(hijos.item(j).getNodeName().trim().equalsIgnoreCase("PorcentajeDescuento")){
								porcentaje=Float.parseFloat(hijos.item(j).getTextContent());
							}
							
							if(hijos.item(j).getNodeName().trim().equalsIgnoreCase("Aplica_mas_de")){
								cantidad=Float.parseFloat(hijos.item(j).getTextContent());
							}
							
						
						}	
								
							
					}
					}
					
				}
			
		}
		List<Float>lista = new ArrayList<>();
		lista.add(0, precio);
		lista.add(1, porcentaje);
		lista.add(2, cantidad);
		
		return lista;
	}

}
